class MVVM {
    constructor(options) {
        this.el = this.get_dom(options.el)
        this.$data = options.data
        new Observer(this)          // 数据监听(数据劫持)
        new Compile(this.el, this)  // 渲染数据
    }
    // 获取dom节点, 详细查看 : 02_01_
    get_dom(el) {
        if (el.nodeType===1) {                      // @ 1 : 如果 ---el是个元素节点--->  直接 return el
            return el
        }                                           // el.nodeTyep===1表示元素节点
        else if(typeof el === 'string'){            // @ 2 : 如果 ---el是个字符串----->  使用querySelector()获取节点
            let dom = document.querySelector(el)
            return dom?dom:document.body
        }
        else{                                       // @ 3 : 否则 -------------------->  return body  
            return document.body
        }
    }
}